home *** CD-ROM | disk | FTP | other *** search
- ;; si-wijesekera.mim -- Sinhala input method with wijesekera method
- ;; Copyright (C) 2005, 2006, 2008
- ;; National Institute of Advanced Industrial Science and Technology (AIST)
- ;; Registration Number H15PRO112
-
- ;; This file is part of the m17n database; a sub-part of the m17n
- ;; library.
-
- ;; The m17n library is free software; you can redistribute it and/or
- ;; modify it under the terms of the GNU Lesser General Public License
- ;; as published by the Free Software Foundation; either version 2.1 of
- ;; the License, or (at your option) any later version.
-
- ;; The m17n library is distributed in the hope that it will be useful,
- ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- ;; Lesser General Public License for more details.
-
- ;; You should have received a copy of the GNU Lesser General Public
- ;; License along with the m17n library; if not, write to the Free
- ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- ;; Boston, MA 02110-1301, USA.
-
- (input-method si wijesekera)
-
- (description "Sinhala input method based on SLS 1134 Rev. 2:2004.
- <http://www.fonts.lk/doc/sin-kbd-layout4.pdf>
- This input method requires surrounding text support.
- ")
-
- (title "සි")
-
- (macro
- ;; skip following (virama zwj consonant)* sequence
- (forward
- (set cc3 @+3)
- (cond
- ((& (= @+1 0x0DCA) (= @+2 0x200D) (>= cc3 0x0D9A) (<= cc3 0x0DC6))
- (delete @+3)
- 0x0DCA 0x200D
- (insert cc3)
- (forward))))
-
- (backward
- (set cc1 @-1)
- (cond
- ((& (= @-3 0x0DCA) (= @-2 0x200D) (>= cc1 0x0D9A) (<= cc1 0x0DC6))
- (delete @-3)
- 0x0DCA
- 0x200D
- (insert cc1)
- (move @<)
- (backward))))
-
- (delete-preceding-zw
- (cond
- ((| (= @-1 0x200C) (= @-1 0x200D))
- (delete @-1)
- (delete-preceding-zw))))
-
- (delete-following-zw
- (cond
- ((| (= @+1 0x200C) (= @+1 0x200D))
- (delete @+1)
- (delete-following-zw))))
-
- (merge-kombuva
- (delete @-1)
- (delete @+2)
- (insert c1)))
-
- (map
- (consonant
- ("l" "ක") ; 0D9A
- ("L" "ඛ") ; 0D9B
- ("." "ග") ; 0D9C
- (">" "ඝ") ; 0D9D
- ("X" "ඞ") ; 0D9E
- ((A-.) "ඟ") ; 0D9F
- ("p" "ච") ; 0DA0
- ("P" "ඡ") ; 0DA1
- ("c" "ජ") ; 0DA2
- ("C" "ඣ") ; 0DA3
- ("\[" "ඤ") ; 0DA4
- ("{" "ඥ") ; 0DA5
- ((A-c) "ඦ") ; 0DA6
- ("g" "ට") ; 0DA7
- ("G" "ඨ") ; 0DA8
- ("v" "ඩ") ; 0DA9
- ("V" "ඪ") ; 0DAA
- ("K" "ණ") ; 0DAB
- ((A-v) "ඬ") ; 0DAC
- (";" "ත") ; 0DAD
- (":" "ථ") ; 0DAE
- ("o" "ද") ; 0DAF
- ("O" "α╢░") ; 0DB0
- ("k" "α╢▒") ; 0DB1
- ((A-o) "α╢│") ; 0DB3
- ("m" "α╢┤") ; 0DB4
- ("M" "α╢╡") ; 0DB5
- ("n" "α╢╢") ; 0DB6
- ("N" "α╢╖") ; 0DB7
- ("u" "α╢╕") ; 0DB8
- ("U" "α╢╣") ; 0DB9
- ("h" "α╢║") ; 0DBA
- ("r" "α╢╗") ; 0DBB
- ("," "α╢╜") ; 0DBD
- ("j" "ව") ; 0DC0
- ("Y" "ශ") ; 0DC1
- ("I" "ෂ") ; 0DC2
- ("i" "ස") ; 0DC3
- ("y" "හ") ; 0DC4
- ("<" "ළ") ; 0DC5
- ("F" "ෆ") ; 0DC6
- )
-
- (misc
- ("x" "ං") ; 0D82
- ((A-x) "ඃ") ; 0D83
-
- ("w" "අ") ; 0D85
- ("b" "ඉ") ; 0D89
- ("B" "ඊ") ; 0D8A
- ("W" "උ") ; 0D8B
- ("R" "ඍ") ; 0D8D
- ((A-,) "ඏ") ; 0D8F
-
- ("T" "ඔ") ; 0D94
-
- ("s" "ි") ; 0DD2
- ("S" "ී") ; 0DD3
- ("q" "ු") ; 0DD4
-
- ("Q" "ූ") ; 0DD6
-
- ((A-a) "α╖│") ; 0DF3
- ((A-\') "α╖┤") ; 0DF4
-
- ("\]" ";")
- ("}" ":")
- ("'" ".")
- ("\"" ",")
- ("z" "'")
- ("Z" "\"")
-
- ("|" "‍්") ; touch (ZWJ 0DCA)
- ("J" "ළු") ; muurdhaja lu (0DC5 0DD4)
- ((S-\ ) " ") ; NBSP
- ((A-\ ) "ΓÇî") ; ZWNJ
-
- ("t"
- (set c @-2)
- (cond
- ((= @-1 0x0DD9)
- (cond
- ((= c 0x200C)
- (delete @-2)
- 0x0D93)
- ((| (< c 0x0D9A) (> c 0x0DC6))
- (delete @-1)
- 0x0D93)
- (1
- 0x0D91)))
- (1
- 0x0D91)))
-
- ("a"
- (set c @-1)
- (cond
- ((= c 0x0D91)
- (delete @-1)
- 0x0D92)
- ((= c 0x0D94)
- (delete @-1)
- 0x0D95)
- ((= c 0x0DD9)
- (delete @-1)
- 0x0DDA)
- ((= c 0x0DDC)
- (delete @-1)
- 0x0DDD)
- (1
- 0x0DCA)))
-
- ("d"
- (set c @-1)
- (cond
- ((= c 0x0D85)
- (delete @-1)
- 0x0D86)
- ((= c 0x0DD9)
- (delete @-1)
- 0x0DDC)
- (1
- 0x0DCF)))
-
- ("e"
- (cond
- ((= @-1 0x0D85)
- (delete @-1)
- 0x0D87)
- (1
- 0x0DD0)))
-
- ("E"
- (set c @-1)
- (cond
- ((= c 0x0D85)
- (delete @-1)
- 0x0D88)
- ((= c 0x0DD4)
- (cond
- ((= @-2 0x0DC5)
- (delete @-1)
- 0x0DD6)
- (1
- 0x0DD1)))
- (1
- 0x0DD1)))
-
- ("D"
- (set c @-1)
- (cond
- ((= c 0x0D8D)
- (delete @-1)
- 0x0D8E)
- ((= c 0x0DD8)
- (delete @-1)
- 0x0DF2)
- (1
- 0x0DD8)))
-
- ("A"
- (set c @-1)
- (cond
- ((= c 0x0D8B)
- (delete @-1)
- 0x0D8C)
- ((= c 0x0D8F)
- (delete @-1)
- 0x0D90)
- ((= c 0x0D94)
- (delete @-1)
- 0x0D96)
- ((= c 0x0DD9)
- (delete @-1)
- 0x0DDE)
- (1
- 0x0DDF)))
-
- ("f"
- (set c @+1)
- (cond
- ((& (>= c 0x0D9A) (<= c 0x0DC6))
- (delete @+1)
- (insert c)
- (forward)
- (set c @+1)
- (cond
- ((= c 0x0DCA)
- (delete @+1)
- 0x0DDA)
- ((= c 0x0DD9)
- (delete @+1)
- 0x0DDB)
- ((= c 0x0DCF)
- (delete @+1)
- 0x0DDC)
- ((= c 0x0DDF)
- (delete @+1)
- 0x0DDE)
- (1
- 0x0DD9)))
- ((= c 0x0D91)
- (delete @+1)
- 0x0D93)
- ((= c 0x0DD9)
- (delete @+1)
- 0x0DDB)
- ((& (= c 0x200C) (= @+2 0x0DD9))
- (delete @+2)
- 0x200C 0x0DDB)
- ((& (= @-1 0x0DD9)
- (| (< @-2 0x0D9A) (> @-2 0x0DC6)))
- (delete @-1)
- 0x0DDB)
- ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
- 0x200C 0x0DD9)
- (1
- 0x0DD9)))
-
- ;; sanyaka letters
- ((A-z)
- (set c @-1)
- (cond
- ((= c 0x0DAF)
- (delete @-1)
- 0x0DB3)
- ((= c 0x0D9C)
- (delete @-1)
- 0x0D9F)
- ((= c 0x0DA9)
- (delete @-1)
- 0x0DAC)
- ((= c 0x0DA2)
- (delete @-1)
- 0x0DA6)))
-
- ;; yansaya
- ("H"
- (set c @-1)
- (cond
- ((= c 0x0DD9)
- (delete @-1))
- ((= c 0x0DDB)
- (delete @-1))
- (1
- (set c 0)))
- (cond
- ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
- 0x0DCA 0x200D 0x0DBA))
- (cond
- ((> c 0)
- (insert c))))
-
- ;; rakaransaya
- ("`"
- (set c @-1)
- (cond
- ((| (= c 0x0DD9) (= c 0x0DDB) (= c 0x0DD2) (= c 0x0DD3))
- (delete @-1))
- (1
- (set c 0)))
- (cond
- ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
- 0x0DCA 0x200D 0x0DBB))
- (cond
- ((> c 0)
- (insert c))))
-
- ;; repaya
- ("~"
- (set c @-1)
- (cond
- ((| (= c 0x0DD9) (= c 0x0DDB))
- (delete @-1))
- (1
- (set c 0)))
- (backward)
- (cond
- ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
- (set c1 @-1)
- (delete @-1)
- (insert c1)
- (move @<)
- 0x0DBB 0x0DCA 0x200D))
- (cond
- ((> c 0)
- (move @>)
- (insert c))))
-
- ((BackSpace)
- (delete-preceding-zw)
- (set c @-1)
- (cond
- ((< c 0)
- (unhandle)))
- (delete @-1)
- (cond
- ((= c 0x0D86)
- 0x0D85)
- ((= c 0x0D87)
- 0x0D85)
- ((= c 0x0D88)
- 0x0D85)
- ((= c 0x0D8C)
- 0x0D8B)
- ((= c 0x0D8E)
- 0x0D8D)
- ((= c 0x0D90)
- 0x0D8F)
- ((= c 0x0D92)
- 0x0D8F)
- ((= c 0x0D93)
- (cond ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6)) 0x200C))
- 0x0DD9)
- ((= c 0x0D95)
- 0x0D94)
- ((= c 0x0D96)
- 0x0D94)
-
- ((& (>= c 0x0D9A) (<= c 0x0DC6) (= @-2 0x0DCA) (= @-1 0x200D))
- (cond
- ((= @-3 0x0DBB)
- (delete @-3)
- (insert c))
- (1
- (delete @-2))))
-
- ((= c 0x0DD9)
- (cond
- ((| (< @-1 0x0D9A) (> @-1 0x0DC6)))
- ((= @+1 0x0D91)
- (delete @-1)
- (delete @+1)
- 0x0D93)
- ((& (>= @+1 0x0D9A) (<= @+1 0x0DC6))
- (set c1 @+1)
- (cond
- ((= @+2 0x0DD9)
- (merge-kombuva)
- 0x0DDB)
- ((= @+2 0x0DCA)
- (merge-kombuva)
- 0x0DDA)
- ((= @+2 0x0DCF)
- (merge-kombuva)
- 0x0DDC)
- ((= @+2 0x0DDF)
- (merge-kombuva)
- 0x0DDE)
- (1
- (delete @-1)
- (delete @+1)
- (insert c1)
- 0x0DD9)))
- ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
- (delete @-1)
- 0x200C
- 0x0DD9)
- ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
- (set c1 @-1)
- (delete @-4)
- (insert c1)
- 0x0DD9)
- ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
- (delete @-3)
- 0x0DD9)
- (1
- (delete @-1)
- 0x0DD9)))
-
- ((= c 0x0DDA)
- 0x0DD9)
-
- ((= c 0x0DDB)
- (cond
- ((| (< @-1 0x0D9A) (> @-1 0x0DC6))
- 0x0DD9)
- ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
- (delete @-1)
- 0x200C
- 0x0DDB)
- ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
- (set c1 @-1)
- (delete @-4)
- (insert c1)
- 0x0DDB)
- ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
- (delete @-3)
- 0x0DDB)
- (1
- (delete @-1)
- 0x0DDB)))
-
- ((= c 0x0DDC)
- 0x0DD9)
- ((= c 0x0DDD)
- 0x0DDC)
- ((= c 0x0DDE)
- 0x0DD9)
- ((= c 0x0DF2)
- 0x0DD8))
-
- (cond
- ((& (>= @-1 0x0D9A)
- (<= @-1 0x0DC6)
- (| (= @+1 0x0DD9) (= @+1 0x0DDB)))
- 0x200C)))
-
- ((Delete)
- (delete-following-zw)
- (set c @+1)
- (cond
- ((< c 0)
- (unhandle)))
- (delete @+1)
- (cond
- ((= c 0x0D86)
- 0x0DCF)
- ((= c 0x0D87)
- 0x0DD0)
- ((= c 0x0D88)
- 0x0DD1)
- ((= c 0x0D8C)
- 0x0DDF)
- ((= c 0x0D8E)
- 0x0DD8)
- ((= c 0x0D90)
- 0x0DDF)
- ((= c 0x0D92)
- 0x0DCA)
- ((= c 0x0D93)
- 0x0D91)
- ((& (>= c 0x0D9A) (<= c 0x0DC6))
- (forward)
- (cond
- ((= @+1 0x0DD9)
- (delete @+1)
- (move @<)
- (insert c))
- ((= @+1 0x0DDB)
- (delete @+1)
- 0x0DD9
- (move @<)
- (insert c))
- ((= @+1 0x0DDA)
- (delete @+1)
- 0x0DCA
- (move @<)
- (insert c))
- ((= @+1 0x0DDC)
- (delete @+1)
- 0x0DCF
- (move @<)
- (insert c))
- ((= @+1 0x0DDE)
- (delete @+1)
- 0x0DDF
- (move @<)
- (insert c))
- (1
- (delete @<))))
- ((= c 0x0DDB)
- 0x0DD9))))
-
- (join
- ("\\")))
-
- (state
- (init
- (consonant
- (move @<)
- (cond
- ((= @-1 0x0DD9)
- (cond
- ((= @-2 0x200C)
- (delete @-2)
- (move @>)
- 0x0DD9)
- ((| (< @-2 0x0D9A) (> @-2 0x0DC6))
- (delete @-1)
- (move @>)
- 0x0DD9)))
- ((= @-1 0x0DDB)
- (cond
- ((= @-2 0x200C)
- (delete @-2)
- (move @>)
- 0x0DDB)
- ((| (< @-2 0x0D9A) (> @-2 0x0DC6))
- (delete @-1)
- (move @>)
- 0x0DDB)))))
- (misc)
- (join (shift join)))
-
- (join
- (consonant
- (move @<)
- (set c @-1)
- (cond
- ((| (= c 0x0DD9) (= c 0x0DDB))
- (cond
- ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
- (delete @-1)
- 0x0DCA 0x200D
- (move @>)
- (insert c))))
- ((& (>= c 0x0D9A) (<= c 0x0DC6))
- 0x0DCA 0x200D))
- (shift init))
-
- (nil
- (shift init))))
-
- ;; Local Variables:
- ;; coding: utf-8
- ;; mode: emacs-lisp
- ;; End:
-